
// 登录和注册需要的User类
var User = require('../models/user')
// 需要引入一个加密的模块
var crypto = require('crypto');



// 一个权限的问题
// 1.用户为登陆的情况下，是无法访问、post ， 、logout的
// 2.用户在登录状态下，无法访问、login,/reg的
// 怎么，如果才能完成这个权限的问题呢

function checkLogin() {

}
function checkNotLolgin() {

}





module.exports = function (app) {
  //首页
  app.get('/',function (req,res) {
    res.render('index',{
      title:'主页',
      user:req.session.user,
      success:req.flash('success').toString(),
      error:req.flash('error').toString()
    });
  });
  //注册页面
  app.get('/reg',function (req,res) {
    res.render('reg',{
      title:'注册',
      user:req.session.user,
      success:req.flash('success').toString(),
      error:req.flash('error').toString()
    })
  })
      //注册行为
  app.post('/reg',function (req,res) {
    // 1.收集用户信息
    // 2.将用户注册信息传入到User类中，nwe实例化一个
    // 3.调用User.save方法数据存放到users集合中去
    // 4.跳转到登录页面完成
    // 5.可以给用户一个提示，想办法

    // 数据接受req.body
    // console.log(req.body)

    var name = req.body.name;

    var password = req.body.password;
    // 确认密码
    var password_re = req.body['password-repeat'];
    //邮箱
    var email = req.body.email;
    // 补充一下，如果未填写的情况下，提示用户
    if (name == '' || password == '' || password_re == '' || email == ''){
      req.flash('error','请正确填写信息');
      return res.redirect('/reg');
    }
    // 首先我们现检查一下两次密码是否一样
    if (password_re != password){
      // 先保存一下当前的两次密码是否一样
      req.flash('error','两次密码输入不一样')
      return res.redirect('/reg')
    }
    //2. 对密码进行加密处理
    var md5 = crypto.createHash('md5');
    var password = md5.update(req.body.password).digest('hex');
    // console.log(password);

    // 3.可以开始实例化user对象
    var newUser = new User({
      name:name,
      password:password,
      email:email
    });
    // 4.检查用户名是否存在
    User.get(newUser.name,function (err,user) {
      // 如果发生错误，跳转回到首页
      if (err){
        req.flash('error',err);
        return res.redirect('/')
      }
      if (user){
        req.flash('error','用户名已存在');
        return res.redirect('/reg')
      }
      // 正常情况下
      newUser.save(function (err,user) {
        if (err){
          req.flash('error',err);
        }
        // 用户信息存入
        req.session.user = newUser;
        req.flash('success','注册成功');
        res.redirect('/');
      })
    })
  })
  //登录
  app.get('/login',function (req,res) {
    res.render('login',{
      title:'登录',
      user:req.session.user,
      success:req.flash('success').toString(),
      error:req.flash('error').toString()
    })
  })
  //登陆行为
  app.post('/login',function (req,res) {
    // 检查下用户名有没有
    // 检查下密码对不对
    // 存储到session中用户的登录信息
    // 跳转到首页
    var md5 = crypto.createHash('md5');
    var password = md5.update(req.body.password).digest('hex');
    User.get(req.body.name,function (err,user) {
      if (!user){
        // 说明用户名不存在
        req.flash('error','用户名不存在');
        return res.redirect('/login')
      }
      //检查两次密码是否一样
      if (user.password != password){
        req.flash('error','密码不正确')
        return res.redirect('/login');
      }
      req.session.user = user;
      req.flash('success','登录成功');
      res.redirect('/')
    })
  });
  //发表
  app.get('/post',function (req,res) {
    res.render('post',{title:'发表'})
  })
  //发表行为
  app.post('/post',function (req,res) {

  })
  //退出
  app.get('/logout',function (req,res) {
    // 清除session
    // 给用户提示
    // 跳转到首页
    req.session.user = null;
    req.flash('success','退出成功');
    res.redirect('/')
  });
};